namespace ModelExamples {

  public ref class Emulator
  {
  private:
    double m_EngineOrder;
    double m_Depth;
    double _curTimeInSecond;
    double _startTimeInSecond;

  public:
    Emulator(System::String^ strCabPath);

    void Start(double dblStartTimeInSecond);
    void Run(double dblCurrentTimeInSecond);

    //Order in %  [0%..100%]
    property double EngineOrder
    { 
      double get()
      {
        return m_EngineOrder;
      }
      void set(double order)
      {
        m_EngineOrder = order;
      }
    }    

    property double EngineOrderState
    { 
      double get()
      {
        return m_EngineOrder;
      }
    }    

    //Veocity in knots
    property double Velocity
    { 
      double get()
      {
        return 10 * 0.514;
      }
    }    

    //Sinkage in meters
    property double Sinkage
    { 
      double get()
      {
        return 0;
      }
    }    

    //Bow Sinkage in meters
    property double BowSinkage
    { 
      double get(){ return 0;      }
    }    

    //Stern Sinkage in meters
    property double SternSinkage
    { 
      double get(){ return 0;      }
    }    

    //Bow Draft in meters
    property double BowDraft
    { 
      double get(){ return 0;  }
    }    

    //Stern Draft in meters
    property double SternDraft
    { 
      double get(){ return 0;  }
    }    

    //Pitch in deg
    property double Pitch
    { 
      double get(){ return 0; }
    }    

    //Depth in meters
    property double Depth
    { 
      double get()
      {
        return m_Depth;
      }
      void set(double depth)
      {
        m_Depth = depth;
      }
    }    

    //Maneuver time in seconds
    property double ManeuverTime
    { 
      double get()
      {
        return _curTimeInSecond - _startTimeInSecond;
      }
    }    

    property bool IsGrounded
    { 
      bool get()
      {
        return false;
      }
    }    
  };  
}